/**
 * 
 */
package ar.utn.frgp.banco.service.impl;

import java.util.Date;
import java.util.List;

import ar.utn.frgp.banco.dao.ReportesDao;
import ar.utn.frgp.banco.entity.Movimientos;
import ar.utn.frgp.banco.entity.PagoServicios;
import ar.utn.frgp.banco.entity.Transferencias;
import ar.utn.frgp.banco.exceptions.DataAccessException;
import ar.utn.frgp.banco.exceptions.ServiceException;
import ar.utn.frgp.banco.service.EBAbstractService;
import ar.utn.frgp.banco.service.ReportesService;

/**
 * @author PUSDERKIS
 *
 */
public class ReportesServiceImpl extends EBAbstractService implements
		ReportesService {
	
	private ReportesDao reportesDAO;

	/**
	 * @see ar.utn.frgp.banco.service.ReportesService#depositosYExtraccionesEntreFechas(java.lang.Long, java.util.Date, java.util.Date)
	 */
	public List<Movimientos> depositosYExtraccionesEntreFechas(Long idCuenta,
			Date fechaIni, Date fechaFin) throws ServiceException {
								
		if (logger.isDebugEnabled()){
			logger.debug("Se intentaran recuperar los movimientos para la cuenta: " + idCuenta + " - ini: " + fechaIni + " - fin: " + fechaFin);
		}
		
		if(idCuenta!= null)
		{
			try{
				return reportesDAO.depositosYExtraccionesEntreFechas(idCuenta, fechaIni, fechaFin);
			}
			catch (DataAccessException e) {
				logger.error("No se pueden obtener los depositos y extracciones de la cuenta: " + idCuenta, e);
				throw new ServiceException("No se pueden obtener los depositos y extracciones de la cuenta: " + idCuenta, e);
			}
		} else {
			logger.error("No se proporciono un número de cuenta valido.");
			throw new ServiceException("No se proporciono un número de cuenta valido.");
		}
		
	}

	/**
	 * @see ar.utn.frgp.banco.service.ReportesService#historialPagoServicios(java.lang.String)
	 */
	public List<PagoServicios> historialPagoServicios(String dni) {
		// TODO Auto-generated method stub
		return null;
	}

	/**
	 * @see ar.utn.frgp.banco.service.ReportesService#historialTransferenciasRealizadas(java.lang.Long)
	 */
	public List<Transferencias> historialTransferenciasRealizadas(Long cuenta)
			throws ServiceException {
		// TODO Auto-generated method stub
		return null;
	}


	/**
	 * @param reportesDAO the reportesDAO to set
	 */
	public void setReportesDAO(ReportesDao reportesDAO) {
		this.reportesDAO = reportesDAO;
	}

}
